spinbutton: update node state more often
authorMatthias Clasen <mclasen@redhat.com>
Sun, 15 Nov 2015 04:18:17 +0000 (23:18 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 15 Nov 2015 04:18:17 +0000 (23:18 -0500)
We need to update the entry_node state, and we should
update the node state initially.

gtk/gtkspinbutton.c

index 4826f5df27cf2236f967f78d7735717060e92320..2a32e131e6aa0ec624ed66dbfaf492dfd890ea21 100644 (file)
@@ -308,6 +308,7 @@ static void gtk_spin_button_real_change_value (GtkSpinButton   *spin,
 static gint gtk_spin_button_default_input  (GtkSpinButton      *spin_button,
                                             gdouble            *new_val);
 static void gtk_spin_button_default_output (GtkSpinButton      *spin_button);
+static void update_node_state              (GtkSpinButton *spin_button);
 
 static guint spinbutton_signals[LAST_SIGNAL] = {0};
 
@@ -824,10 +825,11 @@ gtk_spin_button_init (GtkSpinButton *spin_button)
   g_signal_connect_object (priv->up_node, "style-changed", G_CALLBACK (node_style_changed_cb), spin_button, 0);
   g_object_unref (priv->up_node);
 
-  update_node_ordering (spin_button);
-
   gtk_spin_button_set_adjustment (spin_button, NULL);
 
+  update_node_ordering (spin_button);
+  update_node_state (spin_button);
+
   gtk_widget_add_events (GTK_WIDGET (spin_button), GDK_SCROLL_MASK);
 
   priv->swipe_gesture = gtk_gesture_swipe_new (GTK_WIDGET (spin_button));
@@ -1488,6 +1490,7 @@ gtk_spin_button_state_flags_changed (GtkWidget     *widget,
                                      GtkStateFlags  previous_state)
 {
   GtkSpinButton *spin = GTK_SPIN_BUTTON (widget);
+  GtkSpinButtonPrivate *priv = spin->priv;
 
   if (!gtk_widget_is_sensitive (widget))
     {
@@ -1495,6 +1498,7 @@ gtk_spin_button_state_flags_changed (GtkWidget     *widget,
         gtk_widget_queue_draw (GTK_WIDGET (spin));
     }
 
+  gtk_css_node_set_state (priv->entry_node, gtk_widget_get_state_flags (widget));
   update_node_state (spin);
 }